package pers.gxm.decorator;

import java.util.ArrayList;

public class MultiString extends Display{

    private ArrayList<String> stringList = new ArrayList<>();

    private int columns = 0;
    @Override
    public int getColumns() {
        return columns;
//        int maxColumn = 0;
//        for(String s : stringList){
//            if(s.getBytes().length > maxColumn){
//                maxColumn = s.getBytes().length;
//            }
//        }
//        return maxColumn;
    }

    @Override
    public int getRows() {
        return stringList.size();
    }

    @Override
    public String getRowText(int row) {
        return stringList.get(row);
    }

    public void add(String str){
        stringList.add(str);
        updateColumn(str);
    }

    private String spaces(int count){
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < count;i++){
            sb.append(' ');
        }
        return sb.toString();
    }

    private void updateColumn(String str){
        int length = str.getBytes().length;
        if(length > columns){
            columns = length;
//            列更新不包括当前加入的字符串
            for(int i = 0;i < stringList.size() - 1;i++){
                String s = stringList.get(i);
                int spaceCount = columns - s.getBytes().length;
                stringList.set(i,s + spaces(spaceCount));
            }
        } else if (length < columns) {
            String s = stringList.get( stringList.size() - 1);
            stringList.set(stringList.size() - 1,s + spaces(columns - length));
        }
    }
}
